#ifndef __PLASMA_CANNON_HPP__
#define __PLASMA_CANNON_HPP__

#include <time.h>
#include "Weapon.hpp"
#include "PlasmaCannonStateNames.hpp"
#include "../Mathematics/MVector3D.hpp"
#include "../MFSMachine.hpp"

class PlasmaCannon : public Weapon
{
public:
	PlasmaCannon(MVector3D& pos, int& iFireRate, float& fDamage, float& fBulletSpeed);
	~PlasmaCannon();

	virtual void update(clock_t tick);

	MVector3D&  getShotStartPos() { return m_shotPos; }
	MVector3D&  getOffset() { return m_offset; }

	void        setShotStartPos(MVector3D pos) { m_shotPos = pos; }
	void        setOffset(MVector3D& offset) { m_offset = offset; }

	MFSMachine<PlasmaCannon, PlasmaCannonStateName>*  getStateMachine();

private:
	MVector3D m_shotPos;
	MVector3D m_offset;
	
	MFSMachine<PlasmaCannon, PlasmaCannonStateName>*  m_pMFSMachine;
};

#endif //__PLASMA_CANNON_HPP__

//EOF
